|
Sistema de Nombrado en Java (JNDI) [Parte I] |
Introducción al Entorno
JNDI es un interface genérico. Para acceder a cualquier servicio de nombres/directorios, debemos especificar el proveedor de servicio a utilizar. Esto es sólo una parte de la información de configuración. Dependiendo del servicio de nombres/directorio y del proveedor de servicios podríamos necesitar especificar otra información de configuración, por ejemplo, decirle al proveedor de servicios que servidor utilizar. Especificamos la informacion de configuración en el JNDI usando propiedades de entorno. Aunque esta sección describe muchas propiedades de entorno, en general sólo necesitaremos usar una pocas.
Aquí tenemos los distintos tipos de propiedades de entorno, categorizadas por su ámbito y aplicabilidad.
Propiedades Estándar de Entorno JNDI
El JNDI define propiedades de entorno que son estándars para todos los proveedores de servicios. No todas las propiedades estándars se pueden aplicar a todos los proveedores de servicios. Pero cuando un proveedor de servicios usa una de estas propiedades, debe interpretarla de acuerdo a la definición especificada por el JNDI.
Estas propiedades tienen el prefijo "java.naming." Los interfaces Context y LdapContext declaran constantes para estas propiedades. Aquí tenemos una lista de las propiedades estándars de entorno JNDI.
| Property Name | Description |
|---|---|
| java.naming.applet | Un ejemplar de java.applet.Applet. Los parámetros de este
ejemplar de applet se usan como ciertas propiedades de entono. Ver la siguiente
sección para más detalles.
Constante: Context.APPLET Default: Niinguno. |
| java.naming.authoritative | Un string ("true" o "false")
que especifica la fuente autoritaria del servicio solicitado. Si seleccionamos
esta propiedad a "true", cuando le solicitamos al
proveedor de servicio la fuente de servicio más autoritaria (como un servidor
maestro). De otra forma, la fuente, no tiene (pero puede ser) autoritaria.
Constante: Context.AUTHORITATIVE Default: "false" |
| java.naming.batchsize | La representación string de un entero que especifica el tamaño del caché
preferido a utilizar cuando se devuelven datos mediante el protocolo del
servicio. Puedes ir a la lección Búsquedas
para ver más detalles y ejemplos.
Constante: Context.BATCHSIZE Default: Valor por defecto del proveedor. Ejemplo: "10" |
| java.naming.dns.url | Un string URL que especifica los nombres del host DNS y de dominio a usar
para la implementación del contexto "jndi".
Constante: Context.DNS_URL Default: Ninguna. Ejemplo: "dns://dnsserver/wiz.com" |
| java.naming.factory.control | Una lista separa por dos puntos de nombres de clases de factorías
de control. Cada clase debe implementar el interface ControlFactory.
Esta propiedad la usa ControlFactory.getControlInstance(), que a su vez es usado por los proveedores de servicos. Puedes ir a la lección Controles y Extensiones para ver más detalles. Constante: LdapContext.CONTROL_FACTORIES Default: La lista vacía. Ejemplo: "com.wiz.jndi.ldap.ControlFactory: vendorX.ldap.VendorXControlFactory" |
| java.naming.factory.initial | Nombre de la clase de la factoría de contexto inicial. La clase debe
implementar el interface InitialContextFactory.
Esta clase es ejemplarizada por el constructor de InitialContext. Debemos configurar esta propiedad, a menos que sólo queramos pasar nombres URL a los métodos de InitialContext. Constante: Context.INITIAL_CONTEXT_FACTORY Default: Ninguno. Ejemplo: "com.sun.jndi.ldap.LdapCtxFactory" |
| java.naming.factory.object | Una lista separada por dos puntos de nombres de clases Factorías
de objetos. Cada clase debe implementar los interfaces ObjectFactory o DirObjectFactory.
Esta propiedad la usan NamingManager.getObjectInstance() y DirectoryManager.getObjectInstance(), que su vez son usados por los proveedores de servicio. Puedes ir a la sección Objetos Java Objects y el Directorio para ver más detalles. Constante: Context.OBJECT_FACTORIES Default: La lista vacía. Ejemplo: "com.wiz.jndi.ldap.AttrsToRemote: com.wiz.jndi.ldap.AttrsToCorba" |
| java.naming.factory.state | Una lista separada por dos puntos de nombres de clases de factorías
de estado. Cada clase debe implementar los intefaces StateFactory o DirStateFactory.
Esta propiedad la usan NamingManager.getStateToBind() y DirectoryManager.getStateToBind(), que a su vez es usada por el proveedor del servicio. Puedes ir a la sección Objetos Java y el Directorio para ver más detalles. Constante: Context.STATE_FACTORIES Default: La lista vacía. Ejemplo: "com.wiz.jndi.ldap.RemoteToAttrs:com.wiz.jndi.ldap.CorbaToAttrs" |
| java.naming.factory.url.pkgs | Una lista separada por dos puntos de prefijos de paquetes de factorías de
contexto URL. El prefijo consiste en la id del esquema URL y un sufijo para
construir el nombre de la clase, de esta forma.
prefix.schemeId.schemeIdURLContextFactory Por ejemplo, supongamos que el prefijo es "vendorZ.jndi" y la id del esquema URL es "ldap", el nombre completo de la clase es vendorZ.jndi.ldap.ldapURLContextFactory. Cada clase cuyo nombre se construya de esta forma debe implementar los interfaces ObjectFactory o DirObjectFactory y seguir las reglas de procesamiento de nombres URL. El prefijo del paquete "com.sun.jndi.url" siempre se añade al final de la lista especificada para esta propiedad. Esta propiedad se usa cuando un nombre de URL se pasa a los métodos InitialContext. Puedes ir a la lección URL para ver más información. Constante: Context.URL_PKG_PREFIXES Default: La lista vacía. Ejemplo: com.wiz.jndi.url:vendorZ.jndi |
| java.naming.language | Un string que especifica el idioma preferido para usarlo con este servicio.
Los valores de está propiedad están definidos por la RFC 1766. Constante: Context.LANGUAGE Default: El valor por defecto del proveedor. Ejemplo: "en-US" |
| java.naming.provider.url | Una string URL para configurar el proveedor de servicio especificado por la
propiedad "java.naming.factory.initial".
Constante: Context.PROVIDER_URL Default: El valor por defecto del proveedor. Ejemplo: "ldap://localhost:389/o=JNDITutorial" |
| java.naming.referral | Un string que especifica cómo debería manejar las referencias el proveedor
de servicio, una de "throw", "ignore",
o "follow". Puedes ir a la lección Referencias
para ver detalles y ejemplos.
Constante: Context.REFERRAL Default: El valor por defecto del proveedor. Ejemplo: "throw" |
| java.naming.security.authentication | Un string que especifica el tipo de autentifiación a utilizar; uno de "none",
"simple", "strong", un
string específico del proveedor. Puedes ir a la lección Seguridad
para ver más detalles y ejemplos.
Constante: Context.SECURITY_AUTHENTICATION Default: El valor por defecto del proveedor. Ejemplo: "simple" |
| java.naming.security.credentials | Un objeto que espeifica las credenciales de la entidad que realiza la
autentificación. Su tipo está determinado por el proveedor de servicios.
Puedes ir a la lección Seguridad para ver más detalles y ejemplos. Constante: Context.SECURITY_CREDENTIALS Default: El valor por defecto del proveedor. Ejemplo: Un char[] que contenga "secret." |
| java.naming.security.principal | Un string que especifica la identidad que realiza la autentificación.
Puedes ir a la lección Seguridad para ver más detalles y ejemplos. Constante: Context.SECURITY_PRINCIPAL Default: El valor por defecto del proveedor. Ejemplo: "cn=Directory Manager, o=JNDITutorial" |
| java.naming.security.protocol | Un string que especifica el protocolo de seguridad a utilizar. Puedes ir a
la lección Seguridad
para ver más detalles y ejemplos.
Constante: Context.SECURITY_PROTOCOL Default: El valor por defecto del proveedor. Ejemplo: "ssl" 1 |
Propiedades de Entorno Específicas del Servicio
Las propiedades de entorno específicas del servicio son comunes entre diferentes proveedores de servicio que implementan un protocolo o servicio particular. Por ejemplo, varios proveedores de servicios diferentes podrían implementar LDAP. Estos proveedores usarían propiedades de entorno específicas de LDAP.
Las propiedades específicas del servicio tienen el prefijo "java.naming.servicio." Por ejemplo, las propiedades específicas de LDAP tienen el prefijo "java.naming.ldap." y las propiedades específicas CORBA tienen el prefijo "java.naming.corba." Observa que estas son propiedades de entorno relacionadas con el JNDI y son usadas por los proveedores de servicios JNDI. Un servicio o subsistema como CORBA o RMI podría definir otras propiedades no relacionadas con el JNDI.
Puedes ir a la lección Miscelánea para ver ejemplos de propiedades de entorno específicas de LDAP.
Propiedades de Entorno Específicas de la Característica
Las propiedades de entorno específicas de la característica son comunes a todos los proveedores de servicios que implementan una característica particular. Por ejemplo, el proveedor de servicio LDAP y un proveedor de servicio VendorX podrían usar SASL para autentificación. Estos proveedores usarán propiedades de entorno específicas de SASL cuando configuren esta característica.
Estas propiedades tienen el prefijo "java.naming.característica." Por ejemplo, las propiedades específicas de SASL tienen el prefijo "java.naming.security.sasl." Observa que estas son propiedades de entorno relacionadas con el JNDI y usadas por los proveedores de servicios JNDI. Una característica o subsistema como SASL podría definir otras propiedades no relacionadas con el JNDI. Puedes ir a la lección Seguridad para ver algunos ejemplos de propiedades específicas de SASL.
Propiedades de Entorno Específicas del Proveedor
Las propiedades de etorno específicas del proveedor son propiedades que són usadas por un sólo proveedor. Por ejemplo, el proveedor de servicios LDAP de Sun tiene una propiedad para activar el seguimiento. (ver el ejemplo de la lección FAQ.) Una propiedad específica del proveedor debería tener un prefijo que refleje su identidad única, normalmente el nombre del paquete del proveedor de servicio.
Por ejemplo, la propiedad de seguimiento del proveedor LDAP de Sun se llama "com.sun.jndi.ldap.trace.ber".
















































